import os
import pandas as pd
import glob
import argparse

def aggregate_program_startup_costs(base_dir, target_dir):
    """
    聚合所有子文件夹中的program_startup_cost.csv文件到单个CSV文件
    
    参数:
        base_dir (str): 包含子文件夹的根目录
        target_dir (str): 目标存储目录
    """
    # 确保目标目录存在
    os.makedirs(target_dir, exist_ok=True)
    
    # 获取所有CSV文件路径
    csv_files = glob.glob(os.path.join(
        base_dir, 
        '*',  # 匹配所有子文件夹
        'get_program_startup_cost', 
        'program_startup_cost.csv'
    ))
    
    if not csv_files:
        print("警告: 未找到任何program_startup_cost.csv文件")
        return
    
    # 读取并合并所有CSV文件
    dfs = []
    for csv_file in csv_files:
        try:
            df = pd.read_csv(csv_file)
            # 添加来源信息列
            sub_dir = os.path.basename(os.path.dirname(os.path.dirname(csv_file)))
            df['source_subdir'] = sub_dir
            dfs.append(df)
            print(f"已加载: {csv_file}")
        except Exception as e:
            print(f"错误: 无法读取 {csv_file} - {str(e)}")
    
    if not dfs:
        print("错误: 所有文件读取失败")
        return
    
    # 合并所有DataFrame
    combined_df = pd.concat(dfs, ignore_index=True)
    
    # 保存合并后的CSV文件
    output_file = os.path.join(target_dir, 'program_startup_cost.csv')
    combined_df.to_csv(output_file, index=False)
    
    print(f"\n聚合完成! 共合并 {len(dfs)} 个文件")
    print(f"输出文件: {os.path.abspath(output_file)}")
    print(f"总记录数: {len(combined_df)}")

if __name__ == "__main__":
    # 使用示例路径（实际使用时可通过命令行参数指定）
    base_dir = r"F:\PostGraduate\Point-to-Point-DATA\deal-data-code\C-lop-Prediction\analysis_for_sendrecv\analysis_1-16nodes_data"
    target_dir = r"F:\PostGraduate\Point-to-Point-DATA\deal-data-code\C-lop-Prediction\analysis_for_sendrecv\analysis_1-16nodes_data\aggregate_startup_cost"
    
    # 执行聚合操作
    aggregate_program_startup_costs(base_dir, target_dir)